#Boa:Frame:ListarFacturasCompras

import wx
import wx.grid
import consultasBD
import utiles
import os
from decimal import Decimal

def create(parent):
    return ListarFacturasCompras(parent)

[wxID_LISTARFACTURASCOMPRAS, wxID_LISTARFACTURASCOMPRASBUTTON1, 
 wxID_LISTARFACTURASCOMPRASBUTTON2, wxID_LISTARFACTURASCOMPRASBUTTON3, 
 wxID_LISTARFACTURASCOMPRASBUTTON4, wxID_LISTARFACTURASCOMPRASBUTTON5, 
 wxID_LISTARFACTURASCOMPRASDATEPICKERCTRL1, 
 wxID_LISTARFACTURASCOMPRASDATEPICKERCTRL2, 
 wxID_LISTARFACTURASCOMPRASDATEPICKERCTRL3, 
 wxID_LISTARFACTURASCOMPRASDATEPICKERCTRL4, wxID_LISTARFACTURASCOMPRASGRID1, 
 wxID_LISTARFACTURASCOMPRASPANEL1, wxID_LISTARFACTURASCOMPRASPANEL2, 
 wxID_LISTARFACTURASCOMPRASPANEL3, wxID_LISTARFACTURASCOMPRASRADIOBUTTON1, 
 wxID_LISTARFACTURASCOMPRASRADIOBUTTON2, 
 wxID_LISTARFACTURASCOMPRASRADIOBUTTON3, 
 wxID_LISTARFACTURASCOMPRASRADIOBUTTON4, 
 wxID_LISTARFACTURASCOMPRASSTATICTEXT1, wxID_LISTARFACTURASCOMPRASSTATICTEXT2, 
 wxID_LISTARFACTURASCOMPRASSTATICTEXT3, wxID_LISTARFACTURASCOMPRASSTATICTEXT4, 
 wxID_LISTARFACTURASCOMPRASSTATICTEXT5, wxID_LISTARFACTURASCOMPRASSTATICTEXT6, 
 wxID_LISTARFACTURASCOMPRASSTATICTEXT7, wxID_LISTARFACTURASCOMPRASTEXTCTRL1, 
 wxID_LISTARFACTURASCOMPRASTEXTCTRL2, wxID_LISTARFACTURASCOMPRASTEXTCTRL3, 
 wxID_LISTARFACTURASCOMPRASTEXTCTRL4, wxID_LISTARFACTURASCOMPRASTEXTCTRL5, 
 wxID_LISTARFACTURASCOMPRASTEXTCTRL6, 
] = [wx.NewId() for _init_ctrls in range(31)]

class ListarFacturasCompras(wx.Frame):
    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wx.Frame.__init__(self, id=wxID_LISTARFACTURASCOMPRAS,
              name='ListarFacturasCompras', parent=prnt, pos=wx.Point(35, 17),
              size=wx.Size(826, 556), style=wx.DEFAULT_FRAME_STYLE,
              title='Listar Facturas de Compras')
        self.SetClientSize(wx.Size(818, 529))

        self.panel1 = wx.Panel(id=wxID_LISTARFACTURASCOMPRASPANEL1,
              name='panel1', parent=self, pos=wx.Point(0, 0), size=wx.Size(818,
              529), style=wx.TAB_TRAVERSAL)

        self.staticText1 = wx.StaticText(id=wxID_LISTARFACTURASCOMPRASSTATICTEXT1,
              label='Nro. Proveedor', name='staticText1', parent=self.panel1,
              pos=wx.Point(56, 8), size=wx.Size(74, 13), style=0)

        self.staticText2 = wx.StaticText(id=wxID_LISTARFACTURASCOMPRASSTATICTEXT2,
              label='Nombre Proveedor', name='staticText2', parent=self.panel1,
              pos=wx.Point(136, 8), size=wx.Size(90, 13), style=0)

        self.panel2 = wx.Panel(id=wxID_LISTARFACTURASCOMPRASPANEL2,
              name='panel2', parent=self.panel1, pos=wx.Point(8, 16),
              size=wx.Size(32, 72), style=wx.TAB_TRAVERSAL)

        self.radioButton1 = wx.RadioButton(id=wxID_LISTARFACTURASCOMPRASRADIOBUTTON1,
              label='', name='radioButton1', parent=self.panel2, pos=wx.Point(8,
              8), size=wx.Size(81, 13), style=0)
        self.radioButton1.SetValue(True)
        self.radioButton1.Bind(wx.EVT_RADIOBUTTON,
              self.OnRadioButton1Radiobutton,
              id=wxID_LISTARFACTURASCOMPRASRADIOBUTTON1)

        self.radioButton2 = wx.RadioButton(id=wxID_LISTARFACTURASCOMPRASRADIOBUTTON2,
              label='', name='radioButton2', parent=self.panel2, pos=wx.Point(8,
              48), size=wx.Size(81, 13), style=0)
        self.radioButton2.SetValue(False)
        self.radioButton2.Bind(wx.EVT_RADIOBUTTON,
              self.OnRadioButton2Radiobutton,
              id=wxID_LISTARFACTURASCOMPRASRADIOBUTTON2)

        self.textCtrl1 = wx.TextCtrl(id=wxID_LISTARFACTURASCOMPRASTEXTCTRL1,
              name='textCtrl1', parent=self.panel1, pos=wx.Point(56, 24),
              size=wx.Size(80, 21), style=0, value='')

        self.textCtrl2 = wx.TextCtrl(id=wxID_LISTARFACTURASCOMPRASTEXTCTRL2,
              name='textCtrl2', parent=self.panel1, pos=wx.Point(136, 24),
              size=wx.Size(168, 21), style=0, value='')

        self.button1 = wx.Button(id=wxID_LISTARFACTURASCOMPRASBUTTON1,
              label='Proveedores', name='button1', parent=self.panel1,
              pos=wx.Point(304, 24), size=wx.Size(75, 23), style=0)
        self.button1.Bind(wx.EVT_BUTTON, self.OnBuscarProveedores,
              id=wxID_LISTARFACTURASCOMPRASBUTTON1)

        self.textCtrl4 = wx.TextCtrl(id=wxID_LISTARFACTURASCOMPRASTEXTCTRL4,
              name='textCtrl4', parent=self.panel1, pos=wx.Point(392, 24),
              size=wx.Size(80, 21), style=0, value='')

        self.panel3 = wx.Panel(id=wxID_LISTARFACTURASCOMPRASPANEL3,
              name='panel3', parent=self.panel1, pos=wx.Point(472, 8),
              size=wx.Size(328, 16), style=wx.TAB_TRAVERSAL)

        self.radioButton3 = wx.RadioButton(id=wxID_LISTARFACTURASCOMPRASRADIOBUTTON3,
              label='Factura', name='radioButton3', parent=self.panel3,
              pos=wx.Point(8, 0), size=wx.Size(64, 13), style=0)
        self.radioButton3.SetValue(True)
        self.radioButton3.Bind(wx.EVT_RADIOBUTTON, self.OnRadioFecha1,
              id=wxID_LISTARFACTURASCOMPRASRADIOBUTTON3)

        self.radioButton4 = wx.RadioButton(id=wxID_LISTARFACTURASCOMPRASRADIOBUTTON4,
              label='Ingreso', name='radioButton4', parent=self.panel3,
              pos=wx.Point(176, 0), size=wx.Size(81, 13), style=0)
        self.radioButton4.SetValue(False)
        self.radioButton4.Bind(wx.EVT_RADIOBUTTON, self.OnRadioFecha2,
              id=wxID_LISTARFACTURASCOMPRASRADIOBUTTON4)

        self.datePickerCtrl1 = wx.DatePickerCtrl(id=wxID_LISTARFACTURASCOMPRASDATEPICKERCTRL1,
              name='datePickerCtrl1', parent=self.panel1, pos=wx.Point(480, 24),
              size=wx.Size(80, 21), style=wx.DP_DROPDOWN | wx.DP_SHOWCENTURY)
        self.datePickerCtrl1.Enable(True)

        self.datePickerCtrl3 = wx.DatePickerCtrl(id=wxID_LISTARFACTURASCOMPRASDATEPICKERCTRL3,
              name='datePickerCtrl3', parent=self.panel1, pos=wx.Point(560, 24),
              size=wx.Size(80, 21), style=wx.DP_DROPDOWN | wx.DP_SHOWCENTURY)
        self.datePickerCtrl3.Enable(True)

        self.datePickerCtrl2 = wx.DatePickerCtrl(id=wxID_LISTARFACTURASCOMPRASDATEPICKERCTRL2,
              name='datePickerCtrl2', parent=self.panel1, pos=wx.Point(648, 24),
              size=wx.Size(80, 21), style=wx.DP_DROPDOWN | wx.DP_SHOWCENTURY)
        self.datePickerCtrl2.Enable(False)

        self.datePickerCtrl4 = wx.DatePickerCtrl(id=wxID_LISTARFACTURASCOMPRASDATEPICKERCTRL4,
              name='datePickerCtrl4', parent=self.panel1, pos=wx.Point(728, 24),
              size=wx.Size(80, 21), style=wx.DP_DROPDOWN | wx.DP_SHOWCENTURY)
        self.datePickerCtrl4.Enable(False)

        self.staticText5 = wx.StaticText(id=wxID_LISTARFACTURASCOMPRASSTATICTEXT5,
              label='Descripcion del producto', name='staticText5',
              parent=self.panel1, pos=wx.Point(56, 48), size=wx.Size(117, 13),
              style=0)

        self.staticText6 = wx.StaticText(id=wxID_LISTARFACTURASCOMPRASSTATICTEXT6,
              label='Nro. Factura', name='staticText6', parent=self.panel1,
              pos=wx.Point(392, 8), size=wx.Size(61, 13), style=0)

        self.textCtrl3 = wx.TextCtrl(id=wxID_LISTARFACTURASCOMPRASTEXTCTRL3,
              name='textCtrl3', parent=self.panel1, pos=wx.Point(56, 64),
              size=wx.Size(248, 21), style=0, value='')

        self.button2 = wx.Button(id=wxID_LISTARFACTURASCOMPRASBUTTON2,
              label='Buscar', name='button2', parent=self.panel1,
              pos=wx.Point(726, 64), size=wx.Size(83, 23), style=0)
        self.button2.Bind(wx.EVT_BUTTON, self.OnBotonBuscar,
              id=wxID_LISTARFACTURASCOMPRASBUTTON2)

        self.button3 = wx.Button(id=wxID_LISTARFACTURASCOMPRASBUTTON3,
              label='Imprimir', name='button3', parent=self.panel1,
              pos=wx.Point(8, 496), size=wx.Size(80, 23), style=0)
        self.button3.Bind(wx.EVT_BUTTON, self.OnBotonImprimir,
              id=wxID_LISTARFACTURASCOMPRASBUTTON3)

        self.button5 = wx.Button(id=wxID_LISTARFACTURASCOMPRASBUTTON5,
              label='Limpiar', name='button5', parent=self.panel1,
              pos=wx.Point(640, 496), size=wx.Size(75, 23), style=0)
        self.button5.Bind(wx.EVT_BUTTON, self.OnLimpiar,
              id=wxID_LISTARFACTURASCOMPRASBUTTON5)

        self.button4 = wx.Button(id=wxID_LISTARFACTURASCOMPRASBUTTON4,
              label='Salir', name='button4', parent=self.panel1,
              pos=wx.Point(728, 496), size=wx.Size(80, 23), style=0)
        self.button4.Bind(wx.EVT_BUTTON, self.OnSalir,
              id=wxID_LISTARFACTURASCOMPRASBUTTON4)

        self.grid1 = wx.grid.Grid(id=wxID_LISTARFACTURASCOMPRASGRID1,
              name='grid1', parent=self.panel1, pos=wx.Point(16, 96),
              size=wx.Size(792, 392), style=0)
        self.grid1.Bind(wx.grid.EVT_GRID_CELL_LEFT_DCLICK,
              self.OnSeleccionRenglon)

        self.staticText3 = wx.StaticText(id=wxID_LISTARFACTURASCOMPRASSTATICTEXT3,
              label='Total Cantidad', name='staticText3', parent=self.panel1,
              pos=wx.Point(104, 496), size=wx.Size(70, 13), style=0)

        self.textCtrl5 = wx.TextCtrl(id=wxID_LISTARFACTURASCOMPRASTEXTCTRL5,
              name='textCtrl5', parent=self.panel1, pos=wx.Point(184, 496),
              size=wx.Size(48, 21), style=wx.TE_RIGHT | wx.TE_LEFT, value='0')
        self.textCtrl5.SetEditable(False)

        self.staticText4 = wx.StaticText(id=wxID_LISTARFACTURASCOMPRASSTATICTEXT4,
              label='Total Pesos', name='staticText4', parent=self.panel1,
              pos=wx.Point(248, 496), size=wx.Size(55, 13), style=0)

        self.textCtrl6 = wx.TextCtrl(id=wxID_LISTARFACTURASCOMPRASTEXTCTRL6,
              name='textCtrl6', parent=self.panel1, pos=wx.Point(312, 496),
              size=wx.Size(88, 21), style=wx.TE_RIGHT | wx.TE_LEFT,
              value='0.00')
        self.textCtrl6.SetEditable(False)

        self.staticText7 = wx.StaticText(id=wxID_LISTARFACTURASCOMPRASSTATICTEXT7,
              label='Doble click sobre la factura para ver detalle',
              name='staticText7', parent=self.panel1, pos=wx.Point(392, 72),
              size=wx.Size(245, 13), style=0)
        self.staticText7.SetFont(wx.Font(8, wx.SWISS, wx.NORMAL, wx.BOLD, False,
              'Tahoma'))

    def __init__(self, parent):
        self._init_ctrls(parent)
        self.textCtrl3.Enable(False)
        self.inicializarGrillas()
        self.textCtrl1.SetFocus()

    def habilitaSelecciones(self):
        if self.radioButton1.GetValue():
            habilita = True
        else:
            habilita = False
        self.textCtrl1.Enable(habilita)
        self.textCtrl2.Enable(habilita)
        self.textCtrl3.Enable(not habilita)
        self.textCtrl3.Enable(not habilita)
        self.textCtrl4.Enable(habilita)
        self.button1.Enable(habilita)
        self.datePickerCtrl1.Enable(habilita)
        self.datePickerCtrl3.Enable(habilita)
        self.datePickerCtrl2.Enable(habilita)
        self.datePickerCtrl4.Enable(habilita)
        self.panel3.Enable(habilita)
        if habilita:
            self.habilitaFecha()
            self.textCtrl1.SetFocus()
        else:
            self.textCtrl3.SetFocus()

    def habilitaFecha(self):
        if self.radioButton3.GetValue():
            habilita = True
        else:
            habilita = False
        self.datePickerCtrl1.Enable(habilita)
        self.datePickerCtrl3.Enable(habilita)
        self.datePickerCtrl2.Enable(not habilita)
        self.datePickerCtrl4.Enable(not habilita)
        if habilita:
            self.datePickerCtrl1.SetFocus()
        else:
            self.datePickerCtrl2.SetFocus()

    def OnRadioButton1Radiobutton(self, event):
        self.habilitaSelecciones()

    def OnRadioButton2Radiobutton(self, event):
        self.habilitaSelecciones()

    def OnRadioFecha1(self, event):
        self.habilitaFecha()

    def OnRadioFecha2(self, event):
        self.habilitaFecha()

    def autosizegrilla(self):
        for i in xrange(self.grid1.GetNumberCols()):
            self.grid1.AutoSizeColumn(i,True)
        self.grid1.Refresh()

    def inicializarGrillas(self):
        columnas =['idfactura\n(interno)','Proveedor','Numero\nFactura',\
                   'Fecha\nFactura','Fecha\nIngreso','Cant.\nPrendas','Tipo',\
                   'Subtotal','IVA','Total','Observaciones']
        self.grid1.CreateGrid(1,len(columnas))
        for i, col in enumerate(columnas): 
            self.grid1.SetColLabelValue(i, col)
        self.autosizegrilla()
        self.grid1.EnableEditing(False)
        self.grid1.SetSelectionMode(wx.grid.Grid.wxGridSelectRows)

    def OnSalir(self, event):
        self.Close()

    def OnBuscarProveedores(self, event):
        if self.textCtrl1.GetValue() != "":
            consultaSQL = "SELECT idproveedor,nombre FROM proveedor WHERE idproveedor = '"+self.textCtrl1.GetValue()+"' "
            resultado = consultasBD.ordenCrudaDict(consultaSQL)
            if resultado != ():
                proveedor = resultado[0]
                self.textCtrl1.SetLabel(proveedor["idproveedor"])
                self.textCtrl2.SetLabel(proveedor["nombre"])
                self.textCtrl4.SetFocus()
                return
            self.textCtrl1.SetLabel("")
            self.textCtrl2.SetLabel("")
            self.textCtrl1.SetFocus()
            return
        if self.textCtrl2.GetValue() != "":
            consultaSQL = "SELECT idproveedor,nombre FROM proveedor WHERE nombre LIKE '%"+self.textCtrl2.GetValue()+"%' "
            resultado = consultasBD.ordenCrudaDict(consultaSQL)
            if resultado != () and len(resultado)==1:
                proveedor = resultado[0]
                self.textCtrl1.SetLabel(proveedor["idproveedor"])
                self.textCtrl2.SetLabel(proveedor["nombre"])
                self.textCtrl4.SetFocus()
                return
        import BuscaProveedor2
        ventana = BuscaProveedor2.Dialog1(self,self.textCtrl2.GetLabel())
        try:
            ventana.ShowModal()
            eleccion = ventana.getSeleccion()
        finally:
            ventana.Destroy()
        if eleccion.split(" / ") != ['']:
            self.textCtrl1.SetValue(eleccion.split(" / ")[1])
            self.textCtrl2.SetValue(eleccion.split(" / ")[0])
            self.textCtrl4.SetFocus()
        else:
            self.textCtrl1.SetFocus()

    def buscarProveedor(self,nroproveedor=""):
        if nroproveedor=="": return "",""
        consultaSQL = "SELECT idproveedor,nombre FROM proveedor WHERE idproveedor = '"+nroproveedor+"' "
        resultado = consultasBD.ordenCrudaDict(consultaSQL)
        if resultado != ():
            proveedor = resultado[0]
            return proveedor["idproveedor"],proveedor["nombre"]
        return str(nroproveedor),""

    def buscarPorProveedor(self):
        fechaFacturaInicio = str(self.datePickerCtrl1.GetLabel())
        fechaFacturaFin    = str(self.datePickerCtrl3.GetLabel())
        fechaIngresoInicio = str(self.datePickerCtrl2.GetLabel())
        fechaIngresoFin    = str(self.datePickerCtrl4.GetLabel())
        fechaFacturaInicio = utiles.formatear_fecha_date3(fechaFacturaInicio)+" 00:00:00"
        fechaFacturaFin = utiles.formatear_fecha_date3(fechaFacturaFin)+" 23:59:59"
        fechaIngresoInicio = utiles.formatear_fecha_date3(fechaIngresoInicio)+" 00:00:00"
        fechaIngresoFin = utiles.formatear_fecha_date3(fechaIngresoFin)+" 23:59:59"
        nrofactura = self.textCtrl4.GetLabel()
        nroproveedor = self.textCtrl1.GetLabel()
        condicion1 = condicion2 = condicion3 = ""
        if self.radioButton3.GetValue():
            condicion1 = " fechafactura >= '"+fechaFacturaInicio+"' AND fechafactura <= '"+fechaFacturaFin+"' "
        else:
            condicion1 = " fechaingreso >= '"+fechaIngresoInicio+"' AND fechafactura <= '"+fechaIngresoFin+"' "
        if nroproveedor <> "":
            condicion2 = " AND idproveedor='"+nroproveedor+"' " 
        if nrofactura <> "":
            condicion3 = " AND nrofactura='"+nrofactura+"' "
        condicionSQL = "SELECT * FROM compras WHERE "+condicion1+condicion2+condicion3+" ORDER BY fechafactura,nrofactura,idproveedor "
        return condicionSQL
    
    def buscarPorDescripcion(self):
        if self.textCtrl3.GetLabel()=="":
            utiles.mensaje(None,"Debe especificar una descripcion")
            self.textCtrl3.SetFocus()
            return ""
        descripcion = self.textCtrl3.GetLabel()
        r1 = "SELECT DISTINCT * \n"
        r2 = "FROM compras AS p4, \n"
        r3 = "     (SELECT DISTINCT p2.idfactura \n"
        r4 = "      FROM (SELECT codsussan \n"
        r5 = "            FROM productos \n"
        r6 = "            WHERE descri LIKE '%"+descripcion+"%') AS p1, \n"
        r7 = "           compras_items AS p2 \n"
        r8 = "      WHERE p2.codsussan=p1.codsussan) AS p3 \n"
        r9 = "WHERE p3.idfactura=p4.idfactura ORDER BY fechafactura,nrofactura,idproveedor "
        consultaSQL = r1+r2+r3+r4+r5+r6+r7+r8+r9
        return consultaSQL

    def OnLimpiar(self, event):
        self.grid1.ClearGrid()
        for i in xrange(self.grid1.GetNumberRows()):
            self.grid1.DeleteRows()
        self.grid1.AppendRows()
        self.habilitaSelecciones()
        self.radioButton1.Enable(True)
        self.radioButton2.Enable(True)
        self.radioButton3.Enable(True)
        self.radioButton4.Enable(True)
        self.button1.Enable(True)
        self.button2.Enable(True)
        self.button3.Enable(False)
        self.textCtrl1.SetLabel("")
        self.textCtrl2.SetLabel("")
        self.textCtrl3.SetLabel("")
        self.textCtrl4.SetLabel("")
        self.textCtrl5.SetLabel("0")
        self.textCtrl6.SetLabel("0.00")
        self.textCtrl1.SetFocus()

    def OnBotonBuscar(self, event):
        if self.radioButton1.GetValue():
            consultaSQL = self.buscarPorProveedor()
        else:
            consultaSQL = self.buscarPorDescripcion()
        if consultaSQL == "":
            return
        resultado = consultasBD.ordenCrudaDict(consultaSQL)
        if resultado == () or resultado == None:
            utiles.mensaje(None,"No encontrados datos con los criterios suministrados")
            self.textCtrl1.SetLabel("")
            self.textCtrl2.SetLabel("")
            self.textCtrl1.SetFocus()
            return
        totCantidad = 0
        totPesos = Decimal("0.00")

        for fila,item in enumerate(resultado):
            #idfactura,Proveedor,Nro.Factura,Fecha Factura,Fecha Ingreso,Cantidad Prendas,Tipo,Subtotal,IVA,Total,Observaciones
            #0         1         2           3             4             5                6    7        8   9     10
            if self.textCtrl1.GetLabel()<>"":
                nroproveedor,nombre = self.buscarProveedor(self.textCtrl1.GetLabel())
                proveedor = str(nombre+" / "+nroproveedor)
            else:
                nroproveedor,nombre = self.buscarProveedor(str(item["idproveedor"]))
                proveedor = str(nombre+" / "+nroproveedor)
            subtotal = str(Decimal(str(item["subtotal"])).quantize(Decimal("0.10")))
            iva = str(Decimal(str(item["iva"])).quantize(Decimal("0.10")))
            total = str(Decimal(str(item["total"])).quantize(Decimal("0.10")))
            fecha = str(item["fechafactura"])[:10]
            fecha = utiles.invertirFecha2(fecha)
            fechai = str(item["fechaingreso"])[:10]
            fechai = utiles.invertirFecha2(fechai)
            if item["observaciones"]!=None:
                observaciones = str(item["observaciones"])[:150]
            else:
                observaciones = ""
            try:
                totCantidad+= item["cantprendas"]
                totPesos+= Decimal(total)
            except:
                totCantidad+= 0
                totPesos+= Decimal("0.00")
            
            self.grid1.SetCellValue(fila,0,str(item["idfactura"]))
            self.grid1.SetCellValue(fila,1,proveedor)
            self.grid1.SetCellValue(fila,2,str(item["nrofactura"]))
            self.grid1.SetCellValue(fila,3,fecha)
            self.grid1.SetCellValue(fila,4,fechai)
            self.grid1.SetCellValue(fila,5,str(item["cantprendas"]))
            self.grid1.SetCellValue(fila,6,str(item["en1oen2"]))
            self.grid1.SetCellValue(fila,7,subtotal)
            self.grid1.SetCellValue(fila,8,iva)
            self.grid1.SetCellValue(fila,9,total)
            self.grid1.SetCellValue(fila,10,observaciones)

            self.grid1.SetCellAlignment(fila,0,wx.ALIGN_RIGHT,wx.ALIGN_CENTRE)
            self.grid1.SetCellAlignment(fila,2,wx.ALIGN_RIGHT,wx.ALIGN_CENTRE)
            self.grid1.SetCellAlignment(fila,3,wx.ALIGN_CENTER,wx.ALIGN_CENTRE)
            self.grid1.SetCellAlignment(fila,4,wx.ALIGN_CENTER,wx.ALIGN_CENTRE)
            self.grid1.SetCellAlignment(fila,5,wx.ALIGN_RIGHT,wx.ALIGN_CENTRE)
            self.grid1.SetCellAlignment(fila,6,wx.ALIGN_CENTER,wx.ALIGN_CENTRE)
            self.grid1.SetCellAlignment(fila,7,wx.ALIGN_RIGHT,wx.ALIGN_CENTRE)
            self.grid1.SetCellAlignment(fila,8,wx.ALIGN_RIGHT,wx.ALIGN_CENTRE)
            self.grid1.SetCellAlignment(fila,9,wx.ALIGN_RIGHT,wx.ALIGN_CENTRE)

            self.grid1.AppendRows()

        totCantidad = str(totCantidad)
        totPesos = str(totPesos.quantize(Decimal("0.10")))
        self.textCtrl5.SetLabel(totCantidad)
        self.textCtrl6.SetLabel(totPesos)

        self.autosizegrilla()
        self.grid1.Refresh()
        self.textCtrl1.Enable(False)
        self.textCtrl2.Enable(False)
        self.textCtrl3.Enable(False)
        self.textCtrl4.Enable(False)
        self.datePickerCtrl1.Enable(False)
        self.datePickerCtrl3.Enable(False)
        self.datePickerCtrl2.Enable(False)
        self.datePickerCtrl4.Enable(False)
        self.radioButton1.Enable(False)
        self.radioButton2.Enable(False)
        self.radioButton3.Enable(False)
        self.radioButton4.Enable(False)

    def buscarPTC(self,codsussan,color,talle):
        r1 = "SELECT id FROM producto_talle_color "
        r2 = "WHERE codsussan='"+codsussan+"' AND color='"+color+"' AND talle='"+talle+"' "
        consultaSQL = r1+r2
        resultado=consultasBD.ordenCrudaDict(consultaSQL)
        if resultado==() or resultado==None:
            return ""
        return resultado[0]["id"]

    def buscarDescripcion(self,codsussan):
        r1 = "SELECT descri,preciolt1 FROM productos "
        r2 = "WHERE codsussan='"+codsussan+"' "
        consultaSQL = r1+r2
        resultado=consultasBD.ordenCrudaDict(consultaSQL)
        if resultado==() or resultado==None:
            return "","0"
        return resultado[0]["descri"],resultado[0]["preciolt1"]

    def buscarArticuloProveedor(self,codsussan):
        r1 = "SELECT codartprov FROM producto_codartprov "
        r2 = "WHERE codsussan='"+codsussan+"' "
        consultaSQL = r1+r2
        resultado=consultasBD.ordenCrudaDict(consultaSQL)
        if resultado==() or resultado==None:
            return ""
        return resultado[0]["codartprov"]

    def buscarGrupo(self,codsussan):
        r1 = "SELECT p1.idgrupo,p1.nombregrupo FROM grupos AS p1, productos AS p2 "
        r2 = "WHERE p2.codsussan='"+codsussan+"' AND p2.grupo=p1.idgrupo "
        consultaSQL = r1+r2
        resultado=consultasBD.ordenCrudaDict(consultaSQL)
        if resultado==() or resultado==None:
            return "",""
        return resultado[0]["idgrupo"],resultado[0]["nombregrupo"]

    def buscarColor(self,idcolor):
        r1 = "SELECT nombre FROM colores "
        r2 = "WHERE idcolor='"+idcolor+"' "
        consultaSQL = r1+r2
        resultado=consultasBD.ordenCrudaDict(consultaSQL)
        if resultado==() or resultado==None:
            return " / "
        return idcolor+" / "+resultado[0]["nombre"]

    def OnBotonImprimir(self, event):
        print "Imprimiendo"
        f=open("c:\\erpsussan.doc\\reporte-ListarFacturasCompras.html","w")
        numeroPagina = 1
        nrosuc,nombresuc = utiles.datosSucursal()
        
        totalItemPorPagina = 50
        totalPaginas = int(self.grid1.GetNumberRows()-1) / totalItemPorPagina 
        totalPaginas+= 1

        def encabezadoPagina(texto):
            fecha = utiles.getfechaTime()
            
            fecha1 = self.datePickerCtrl1.GetLabel()
            fecha2 = self.datePickerCtrl2.GetLabel()

            a = '<table width="100%" cellspacing="0" border="0">\n'
            a+= '<tr>\n'
            a+= '<td valign="center" align="left" width="33%">'
            a+= 'SUSSAN BOUTIQUE<br>Facturas de Compras<br></td>\n'
            a+= '<td valign="center" align="left" width="34%">Desde '+fecha1
            a+= '<br>Hasta '+fecha2
            a+= '</td>\n'
            a+= '<td valign="center" align="right" width="33%">'+fecha
            a+= '<br>P&aacute;gina '+str(numeroPagina)+' / '+str(totalPaginas)+'</td>\n'
            a+= '</tr>\n'
            a+= '</table>\n'
            texto+= a
            return texto
        
        def encabezadoTabla(texto):
            #idfactura,Proveedor,Nro.Factura,F.Factura,F.Ingreso,Cant,Tipo,Subtotal,IVA,Total
            #0         1         2           3         4         5    6    7        8   9
            a = '<hr>'
            tama = '"2"'
            a+= '<table width="100%" cellspacing="1" border="0"> \n'
            a+= '<tr>\n'
            a+= '<td valign="top" align="right"><font size='+tama+'>Orden</font></td> \n'
            a+= '<td valign="top" align="left"><font size='+tama+'>Proveedor</font></td> \n'
            a+= '<td valign="top" align="right"><font size='+tama+'>Numero<br>Factura</font></td> \n'
            a+= '<td valign="top" align="center"><font size='+tama+'>Fecha<br>Factura</font></td> \n'
            a+= '<td valign="top" align="center"><font size='+tama+'>Fecha<br>Ingreso</font></td> \n'
            a+= '<td valign="top" align="right"><font size='+tama+'>Cant.</font></td> \n'
            a+= '<td valign="top" align="center"><font size='+tama+'>Tipo</font></td> \n'
            a+= '<td valign="top" align="right"><font size='+tama+'>Subtotal</font></td> \n'
            a+= '<td valign="top" align="right"><font size='+tama+'>IVA</font></td> \n'
            a+= '<td valign="top" align="right"><font size='+tama+'>Total</font></td> \n'
            a+= '</tr> \n'
            a+= '<tr>\n'
            a+= '<td colspan="10"><hr></td>\n'
            a+= '</tr>\n'
            texto+= a
            return texto
        
        cadena = '<?xml version="1.0" encoding="utf-8" ?> \n'
        cadena+= '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> \n'
        cadena+= '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> \n'
        cadena+= '<head> \n'
        cadena+= '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> \n'
        cadena+= '<meta name="generator" content="Docutils 0.4.1: http://docutils.sourceforge.net/" /> \n'
        cadena+= '<title>Sussan Boutique</title> \n'
        cadena+= '</head> \n'
        cadena+= '<body> \n'

        cadena = encabezadoPagina(cadena)
        cadena = encabezadoTabla(cadena)
        f.write(cadena)
        
        renglon = 0
        orden = 0
        for fil in xrange(self.grid1.GetNumberRows()):
            #idfactura,Proveedor,Nro.Factura,F.Factura,F.Ingreso,Cant,Tipo,Subtotal,IVA,Total
            #0         1         2           3         4         5    6    7        8   9
            if self.grid1.GetCellValue(fil,0)=="": continue
            orden+= 1
            proveedor = self.grid1.GetCellValue(fil,1)
            nrofactura = self.grid1.GetCellValue(fil,2)
            fechafactura = self.grid1.GetCellValue(fil,3)
            fechaingreso = self.grid1.GetCellValue(fil,4)
            cantidad = self.grid1.GetCellValue(fil,5)
            tipo = self.grid1.GetCellValue(fil,6)
            subtotal = self.grid1.GetCellValue(fil,7)
            iva = self.grid1.GetCellValue(fil,8)
            total = self.grid1.GetCellValue(fil,9)

            tama = '"0.02"'
            cadena = '<tr> \n'
            cadena+= '<td valign="top" align="right"><font size='+tama+'>'+str(orden)+'</font></td> \n'
            cadena+= '<td valign="top" align="left"><font size='+tama+'>'+proveedor+'</font></td> \n'
            cadena+= '<td valign="top" align="right"><font size='+tama+'>'+nrofactura+'</font></td> \n'
            cadena+= '<td valign="top" align="center"><font size='+tama+'>'+fechafactura+'</font></td> \n'
            cadena+= '<td valign="top" align="center"><font size='+tama+'>'+fechaingreso+'</font></td> \n'
            cadena+= '<td valign="top" align="right"><font size='+tama+'>'+cantidad+'</font></td> \n'
            cadena+= '<td valign="top" align="center"><font size='+tama+'>'+tipo+'</font></td> \n'
            cadena+= '<td valign="top" align="right"><font size='+tama+'>'+subtotal+'</font></td> \n'
            cadena+= '<td valign="top" align="right"><font size='+tama+'>'+iva+'</font></td> \n'
            cadena+= '<td valign="top" align="right"><font size='+tama+'>'+total+'</font></td> \n'
            cadena+= '</font></tr>\n'
            f.write(cadena)
            
            renglon+= 1
            
            if renglon == totalItemPorPagina :
                renglon = 0
                numeroPagina+= 1
                cadena = encabezadoPagina("")
                cadena = encabezadoTabla(cadena)
                f.write(cadena)

        cadena = '</table><br><font size='+tama+'>\n'
        cadena+= 'Total cantidad: '+self.textCtrl5.GetLabel()+'\n'
        cadena+= '<br>Total pesos: '+self.textCtrl6.GetLabel()+'</font>\n'
        cadena+= '</body>\n</html>\n'
        f.write(cadena)
        f.close()

        import os
        os.system("taskkill /IM firefox.exe /F")
        os.system("c:\\explorer.lnk c:\\erpsussan.doc\\reporte-ListarFacturasCompras.html")

    def OnSeleccionRenglon(self, event):
        fila = self.grid1.GetGridCursorRow()
        #idfactura,Proveedor,Nro.Factura,Fecha Factura,Fecha Ingreso,Cantidad Prendas,Tipo,Subtotal,IVA,Total
        #0         1         2           3             4             5                6    7        8   9
        idfactura = self.grid1.GetCellValue(fila,0)
        import ListarFacturasComprasDetalle
        dlg = ListarFacturasComprasDetalle.Dialog1(self,idfactura)
        try:
            dlg.ShowModal()
        finally:
            dlg.Destroy()        
